home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / mail / mh / doc / realwork.tty.Z / realwork.tty
Encoding:
Text File  |  1990-04-11  |  81.3 KB  |  2,446 lines

  1.  
  2.  
  3.  
  4.  
  5.                                                    MH.5:
  6.  
  7.                           How  to  process  200  messages  a  day
  8.  
  9.                            and  still  get  some  real  work  done./
  10.  
  11.  
  12.                                             Marshall T. Rose
  13.  
  14.                                 Member, Research Technical Staff
  15.  
  16.                           Northrop Research and Technology Centery
  17.  
  18.  
  19.  
  20.                                              John L. Romine
  21.  
  22.                                      Computing Support Group
  23.  
  24.                      Department of Information and Computer Science
  25.  
  26.                                    University of California, Irvinez
  27.  
  28.  
  29.  
  30.                                                 Abstract
  31.  
  32.  
  33.         The  UCI  version  of  the  Rand  Message  Handling  System  (MH)  is  dis-
  34.  
  35.         cussed.  MH is a powerful user agent which operates in the ARPA Internet
  36.  
  37.         and UUCP environments.  In addition to the usual functions provided
  38.  
  39.         by similar programs, MH has several distinguishing characteristics which
  40.  
  41.         give the user additional message handling capability.  In particular, MH
  42.  
  43.         provides  mechanisms  for  maintaining  an  organized  mail  environment,
  44.  
  45.         tailoring its behavior, and extending its functions.
  46.  
  47.  
  48.         This document describes MH from several perspectives.  Particular em-
  49.  
  50.         phasis is given to:  the MH user environment, advanced features of MH
  51.  
  52.         which  have  proven  to  be  particularly  useful  for  sophisticated  users  of
  53.  
  54.         electronic mail, the user interface issues in MH, and the mh.5 distribu-
  55.  
  56.         tion.  The paper concludes with a summary of the authors' experiences
  57.  
  58.         with MH, and a discussion of future areas of enhancement.
  59.  
  60.  
  61.  
  62. _____________________________________
  63. ./ Alternate title: MH: Your Key to Success.
  64. y One Research Park, Palos Verdes Peninsula, CA 90274. Telephone: 213/377-4811.
  65.  
  66. Computer mail: MRose% NRTC@USC-ECL, : : :!fucbvax!ucivax,trwrbg!nrtc!mrose.
  67. z University of California at Irvine, Irvine, CA 92717. Telephone: 714/856-6852.
  68.  
  69. Computer mail: J-Romine@USC-ECL, : : :!fucbvax,trwrbg!ucivax!jromine.
  70.  
  71.  
  72.                                                    MH.5:
  73.  
  74.                           How  to  process  200  messages  a  day
  75.  
  76.                              and  still  get  some  real  work  done
  77.  
  78.  
  79.  
  80. Introduction
  81.  
  82.         The UCI version of the Rand Message Handling System, MH, is a software
  83.  
  84. system  that  performs  two  functions:  first_,  it  interfaces  a  user  to  a  message
  85.  
  86. transport system, so the user may receive and send mail; second___, it permits the
  87.  
  88. user to maintain an organized mail environment to facilitate the composition of
  89.  
  90. new messages and the reading of old messages.  In short, while not responsible for
  91.  
  92. the delivery of messages, MH aids the user in handling mail.
  93.  
  94.  
  95.         MH  was  originally  developed  by  the  Rand  Corporation,  and  initially  was
  96.  
  97. proprietary  software.   The  Department  of  Information  and  Computer  Science
  98.  
  99. at  University  of  California,  Irvine,  shortly  after  joining  the  Computer  Science
  100.  
  101. Network (CSnet), acquired a copy of MH, and began additional development of
  102.  
  103. the software.  Since that time, the Rand Corporation has declared MH to be in the
  104.  
  105. public domain, and the UCI version of MH has passed through four major releases.
  106.  
  107. The current version, mh.5, is available from U.C. Irvine for a nominal distribution
  108.  
  109. fee, or may be retrieved from the University of Delaware via anonymous FTP.
  110.  
  111.  
  112.         Much credit must be given to the initial designers and implementors of MH:
  113.  
  114. Bruce Borden, Stockton Gaines, and Norman Shapiro.  Although MH has suffered
  115.  
  116. significant  development  at  UCI  since  Rand's  initial  release,  the  fundamental
  117.  
  118. concepts  of  MH's  environs  have  remained  nearly  unchanged.   In  addition,  the
  119.  
  120. authors of the current release gratefully acknowledge the comments of the many
  121.  
  122. sites which have run various releases of MH in the past.  In particular, the dozen
  123.  
  124. or so beta test sites for mh.5 provided tremendous help in stabilizing the current
  125.  
  126. release.
  127.  
  128.  
  129.         MH  runs  on  different  versions  of  the  UNIX1  operating  system  (such  as
  130.  
  131. Berkeley  4.2bsd  and  various  flavors  of  v7).   In  addition,  MH  supports  four
  132.  
  133. different  message  transport  interfaces:  SendMail[EAllm83],  the  standard  mailer
  134.  
  135. for 4.2bsd systems; MMDF[DCroc79] and MMDF-II[DKing84], the Multi-Channel
  136.  
  137. Memo Distribution Facility developed by the University of Delaware which forms
  138.  
  139. the software-backbone for CSnet[DCome83] mail relay service; SMTP, the ARPA
  140.  
  141. Internet Simple Mail Transfer Protocol[SMTP]; and, a stand-alone delivery system.
  142.  
  143.  
  144.  
  145. _____________________________________
  146. 1  UNIX is a trademark of AT&T Bell Laboratories.
  147.  
  148.  
  149.  
  150.                                                        1
  151.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              2
  152.  
  153.  
  154.         This  paper  is  organized  in  a  straight-forward  fashion:  Initially,  the  MH
  155.  
  156. philosophy  of  mail  handling  is  presented,  along  with  a  description  of  the
  157.  
  158. environment which the MH user is given to process mail.  Following this, certain
  159.  
  160. advanced features of MH are discussed in more detail, such as facilities for selecting
  161.  
  162. messages, and "advanced" concepts in draft handling.  In addition, user interface
  163.  
  164. issues in mail handling are addressed, and the merits of MH's approach is critically
  165.  
  166. examined.  Next, the mh.5 distribution package is described.  Finally, we conclude
  167.  
  168. by discussing the authors' experience with MH development and introducing areas
  169.  
  170. where MH may be further developed.
  171.  
  172.  
  173.         Although  familiarity  with  MH  is  not  assumed  on  the  part  of  the  reader,
  174.  
  175. some knowledge of the UNIX operating system is useful.  Appendix A gives a short
  176.  
  177. synopsis of the MH commands.
  178.  
  179.  
  180.  
  181. The MH Philosophy
  182.  
  183.         Although MH has many traits which tend to distinguish it from other systems
  184.  
  185. which handle mail, there is a single fundamental design decision which influences
  186.  
  187. the interface between MH and the user:  MH differs from most other systems in
  188.  
  189. that it is composed of many small programs instead of one very large one.  This
  190.  
  191. architecture gives MH much of its strength, since intermediate and advanced users
  192.  
  193. are able to take advantage of this flexibility.
  194.  
  195.  
  196.         The key to this flexibility is that the UNIX shell (usually the C shell or the
  197.  
  198. Bourne shell), is the user's interface to MH. This means that when handling mail,
  199.  
  200. the entire power of the shell is at the user's disposal, in addition to the facilities
  201.  
  202. which MH provides.  Hence,  the user may intersperse mail handling commands
  203.  
  204. with other commands in an arbitrary fashion, making use of command handling
  205.  
  206. capabilities which the user's shell provides.
  207.  
  208.  
  209.         Furthermore, rather than storing messages in a complicated data structure
  210.  
  211. within a monolithic file, each message in MH is a UNIX file, and each folder (an
  212.  
  213. object  which  holds  groups  of  messages)  in  MH  is  a  UNIX  directory.   That  is,
  214.  
  215. the directory- and file-structure of UNIX is used directly.  As a result, any UNIX
  216.  
  217. file-handling command can be applied to any message.
  218.  
  219.  
  220.         To the novice, this may not make much sense or may not seem important.
  221.  
  222. However,  as  users  of  MH  become  more  experienced,  they  find  this  capability
  223.  
  224. attractive.  In addition, this approach is often quite pleasing to system implemen-
  225.  
  226. tors,  because  it  minimizes  the  amount  of  coding  to  be  performed,  and  given  a
  227.  
  228. modular design, changes to the software system can be maintained easily.  There
  229.  
  230. are,  however,  performance penalties to be paid with this scheme.  This issue is
  231.  
  232. considered later in the paper.
  233.  
  234.  
  235.         Having described how MH fits into the UNIX environment, we now discuss
  236.  
  237. the mail handling environment which is available to the MH user.
  238.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              3
  239.  
  240.  
  241. The MH Environs
  242.  
  243.         In the $ HOME       directory of each MH user, a file named .mh_profile     contains
  244.  
  245. static information about the user's MH environment, and default arguments for
  246.  
  247. MH programs.  For the latter case, each line of profile takes the form:
  248.  
  249.  
  250.            program-name: options
  251.  
  252.  
  253. Each MH program consults the user's .mh_profile     for its options.  These options
  254.  
  255. are consulted prior to evaluating any command-line arguments, and so provide the
  256.  
  257. MH user the capability to customize the defaults for each command.  Futher, by
  258.  
  259. using the UNIX link facility, different names can be given to the same command.
  260.  
  261. Since each MH command looks in the .mh_profile     for a component with the name
  262.  
  263. by  which  it  was  invoked,  it's  possible  to  have  different  defaults  for  the  same
  264.  
  265. program.  For example, it is not uncommon to link prompter (a simple prompting
  266.  
  267. editor front-end) under the name rapid in the user's bin/   directory, and add to the
  268.  
  269. .mh_profile    :
  270.  
  271.  
  272.            rapid: -prepend -rapid
  273.  
  274.  
  275. As a result, when prompter is invoked as rapid, it automatically uses the `-prepend'
  276.  
  277. and `-rapid'      options.
  278.  
  279.  
  280.         The profile component ``Path:''       is the path to the user's MH-directory,
  281.  
  282. usually Mail.  In addition to containing the user's folders, the MH-directory also
  283.  
  284. contains skeletons and templates used by the MH programs, and the user's context
  285.  
  286. file.  This latter file has the same format as the user's .mh_profile    , and contains the
  287.  
  288. dynamic, context-dependent information about the user's environment.  Whenever
  289.  
  290. MH looks for an MH-specific file, such as a template or skeleton, it first consults
  291.  
  292. the user's MH-directory, and then a system-wide library area.
  293.  
  294.  
  295.         The MH user always has a current folder, which is the folder in which the user
  296.  
  297. is currently (or was last) working.  Since any MH program which deals with folders
  298.  
  299. implicitly manipulates this information, the name of the current folder is stored in
  300.  
  301. the context    component ``Current-Folder:''            .  Every folder has a current message
  302.  
  303. known as `cur'   .  These values are the defaults for MH commands which accept
  304.  
  305. folder and/or messages arguments.
  306.  
  307.  
  308.         MH programs make use of a set of envariables which further customize their
  309.  
  310. behavior.  The $ MH    envariable, if present, specifies the name of an alternate profile
  311.  
  312. for the user.  This allows a user of MH to easily maintain multiple mail-handling
  313.  
  314. environments.
  315.  
  316.  
  317.         In terms of command syntax, most MH commands accept an optional folder
  318.  
  319. argument, such as `+outbox'      .  Unlike most UNIX commands, all MH commands
  320.  
  321. have  switches  which  are  words,  rather  than  single  letters.   Switches  may  be
  322.  
  323. abbreviated  to  the  least  unambiguous  prefix.  All  MH  commands  also  support
  324.    Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              4
  325.  _______________________________________________________________________________________________________________
  326.  
  327.   1   %  inc
  328.   2   Incorporating  new  mail  into  inbox...
  329.   3
  330.   4       1+  03/16  Rand  MH  System      MH  transcript   <<Here's  the  body  of  a  sample  m
  331.   5
  332.   6   %  show
  333.   7   (Message  inbox:1)
  334.   8   To:  jromine@uci-icsa
  335.   9   Subject:  MH  transcript
  336. 10    Date:  16  Mar  85  18:28:59  PST  (Sat)
  337. 11    From:  Rand  MH  System  <mh@uci-icsa>
  338. 12
  339. 13    Here's  the  body  of  a  sample  message.
  340. 14    %  repl
  341. 15    To:  Rand  MH  System  <mh@uci-icsa>
  342. 16    cc:  jromine@uci-icsa
  343. 17    Subject:  Re:  MH  transcript
  344. 18    In-reply-to:  Your  message  of  16  Mar  85  18:28:59  PST  (Sat).
  345. 19    --------
  346. 20    Thanks  for  the  test.
  347. 21
  348. 22    /JLR
  349. 23    ^D
  350. 24
  351. 25    What  now?  send
  352. 26    %  comp
  353. 27    To:  MRose@UCI
  354. 28    cc:
  355. 29    Subject:  sample  comp
  356. 30    --------
  357. 31    Here's  a  sample  compose  for  the  MH  transcript.
  358. 32
  359. 33    /JLR
  360. 34    ^D
  361. 35
  362. 36    What  now?  send  -verbose
  363. 37      --  Posting  for  All  Recipients  --
  364. 38       --  Local  Recipients  --
  365. 39       MRose:  address  ok
  366. 40      --  Recipient  Copies  Posted  --
  367. 41    Message  Processed
  368.  
  369.  
  370.                                                   Figure 1
  371.  
  372.  _____________________________________________An_MH_Session_____________________________________________________
  373.  
  374.  
  375.  
  376.  a  `-help'     switch,  which  lists  the  syntax  of  the  command  along  with  available
  377.  
  378.  switches, and the version number of the command.  Most MH commands also take
  379.  
  380.  a `msg'    or `msgs'     argument which takes the form of a message number (``1''   ), a
  381.  
  382.  message range (``1-2''     ), a standard sequence name (``cur''     ), or a user-defined
  383.  
  384.  sequence name (``select''      ).
  385.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              5
  386.  
  387.  
  388. An MH Transcript
  389.  
  390.         Figure 1 contains a transcript of a simple MH session.  First, inc is run to
  391.  
  392. incorporate the new mail into the user's ``+inbox''       folder.
  393.  
  394.  
  395.         A  scan  listing  of  the  mail  is  printed  while  it  is  being  incorporated.  (The
  396.  
  397. user could run scan explicitly to generate additional scan listings later on.)  The
  398.  
  399. scan  listing  gives  the  message  number,  followed  by  the  date,  message  sender,
  400.  
  401. and subject.  (If the message originated from the user generating the listing, the
  402.  
  403. ``to:''      addressee is displayed instead of the sender.)  If the subject is short, the
  404.  
  405. first part of the message body is displayed after the characters ``<<''    .  The plus
  406.  
  407. sign (`+') after the message number indicates the current message.
  408.  
  409.  
  410.         The user show s the message, and decides to repl y.  A reply draft is created
  411.  
  412. using  the  headers  of  the  message  being  replied-to,  using  the  default  replcomps
  413.  
  414. template.  The  default  editor,  prompter,  is  called  to  edit  the  draft.  When  an
  415.  
  416. EOT is typed, prompter exits and the user is left at the What  now?  prompt.  The
  417.  
  418. option send is chosen.  Since there were no problems in posting the draft with the
  419.  
  420. message transport system, no additional output is produced.  (MH is not verbose
  421.  
  422. by default.)
  423.  
  424.  
  425.         The  user  then  decides  to  compose  a  new  message.  The  default  skeleton,
  426.  
  427. components      ,  is  copied  to  the  draft,  and  prompter  is  once  again  called.   After
  428.  
  429. entering the addresses, subject, and body, the user then send s the draft   from the
  430.  
  431. What  now?  prompt, using ``send -verbose''           , which causes MH to list out the
  432.  
  433. message addresses as it submits them to the message transport system.
  434.  
  435.  
  436.  
  437. Some MH Features
  438.  
  439.         We now consider certain advanced features in MH. These features have been
  440.  
  441. chosen to demonstrate some useful capabilities available to the MH user.
  442.  
  443.  
  444. Message Sequences and Selection
  445.  
  446.         MH  has  several  built-in  message  sequence  names,  which  may  be  used
  447.  
  448. anywhere a `msg'     or `msgs'     argument is expected.  These are:  `cur'   , `next'    ,
  449.  
  450. `prev'    , `first'     , `last'    , and `all'   .  Message ranges may also be specified.  For
  451.  
  452. example, `all'     is actually `first-last'        , and `+mh last:5'         references the last
  453.  
  454. five messages in your `+mh'    folder.  A powerful capability of MH is the ability to use
  455.  
  456. not only the pre-defined message sequence names, but also arbitrary user-defined
  457.  
  458. message sequence names.
  459.  
  460.  
  461.         Although all MH programs recognize user-defined sequences when appropriate,
  462.  
  463. the  pick  and  mark  commands  can  create  and  modify  user-defined  message
  464.  
  465. sequences.  The mark command allows low-level manipulation of sequences, and is
  466.  
  467. not particularly interesting in our discussion.
  468.  
  469.  
  470.         The pick command selects certain messages out of a folder.  The criteria used
  471.  
  472. for selection may be a search string and/or a date range.
  473.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              6
  474.  
  475.  
  476.         Searching  is  performed  on  either  a  specific  header  in  the  message  (e.g.,
  477.  
  478. ``To:''     ), or anywhere within the message.  By default, pick lists out the message
  479.  
  480. numbers that matched the selection criteria.  Thus, pick is useful in backquoted
  481.  
  482. operations to the shell.  For example, to scan all the messages in the current folder
  483.  
  484. from "frated", the MH user issues the command:
  485.  
  486.  
  487.            scan `pick -from frated`
  488.  
  489.  
  490. To  perform  more  complicated  message  selection,  user-defined  sequences  are
  491.  
  492. employed.  Supplying a `-sequence name'           argument to pick, will cause it to define
  493.  
  494. the sequence `name'     as those messages matched.
  495.  
  496.  
  497.         Giving  pick  a  list  of  messages  causes  it  to  limit  its  search  to  just  those
  498.  
  499. messages.  For example, to find all the messages in the current folder from "frated"
  500.  
  501. also dated before friday:
  502.  
  503.  
  504.            pick -from frated -sequence select
  505.  
  506.            pick select -before friday -sequence select
  507.  
  508.  
  509. With the first pick command, the sequence ``select''        is defined to be all those
  510.  
  511. messages from "frated".  In the second command, only those messages already in
  512.  
  513. the ``select''       sequence are searched, and the ``select''       sequence is redefined
  514.  
  515. to be only those messages which are also dated before friday.  Those messages could
  516.  
  517. then be show n with:
  518.  
  519.  
  520.            show select
  521.  
  522.  
  523. When  a  `-sequence name'           argument  is  given  to  pick,  the  default  behavior  _
  524.  
  525. listing the message numbers matched _ is inhibited.  To re-enable this behavior,
  526.  
  527. the `-list'     option may be given.  As a result, advanced users of MH often put the
  528.  
  529. following line in their .mh_profile    :
  530.  
  531.  
  532.            pick: -sequence select -list
  533.  
  534.  
  535. which allows them to easily make use of the `select'      sequence as the messages
  536.  
  537. last selected with pick.
  538.  
  539.  
  540.         Often it is desirable to act upon those messages which are not members of
  541.  
  542. a given sequence.  For this purpose, the ``Sequence-Negation:''               profile entry
  543.  
  544. is useful.  If the name of a user-defined sequence is prefixed with the value of the
  545.  
  546. sequence-negation profile entry, MH commands will operate upon those messages
  547.  
  548. which are not members of that sequence.  For example, given a profile entry of:
  549.  
  550.  
  551.            Sequence-Negation: not
  552.  
  553.  
  554. those messages which are not in the `select'      sequence could be scan'd with:
  555.  
  556.  
  557.            scan notselect
  558.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              7
  559.  
  560.  
  561.         Obviously, some confusion could result if an attempt was made to define a se-
  562.  
  563. quence name which began with the sequence-negation string (e.g., ``notselect''        ).
  564.  
  565. For this reason, MH users will often use a single character, which their shell doesn't
  566.  
  567. interpret, as their sequence-negation string (e.g., up-caret (`^') for C Shell users,
  568.  
  569. and exclamation-mark (`!')  for Bourne shell users).
  570.  
  571.  
  572.         MH also provides a way of automatically remembering the last message list
  573.  
  574. given to an MH command.  This facility is implemented by using a profile entry
  575.  
  576. called ``Previous-Sequence:''              .
  577.  
  578.  
  579. Draft Handling
  580.  
  581.         After  the  initial  edit  of  a  message  draft,  the  comp,  dist,  forw,  and  repl
  582.  
  583. programs give the user a What  now?  prompt.  The valid responses include:  edit to
  584.  
  585. re-edit the draft, quit to exit without sending the draft, send to send the draft, and
  586.  
  587. push to send the draft in the background.
  588.  
  589.  
  590.         When the send option is given, the draft is posted with the message transport
  591.  
  592. system.  If there problems posting the draft, the What  now?  prompt is re-issued, so
  593.  
  594. errors in the draft may be corrected.
  595.  
  596.  
  597.         Since posting the draft can be slow, the push option allows the MH user to
  598.  
  599. send the draft in the background, and return immediately to the shell.  If there are
  600.  
  601. problems posting the message, the user will not see the diagnostics produced by
  602.  
  603. the message transport system.  For this reason, if push is used instead of send, and
  604.  
  605. the message is not successfully posted, MH mails a message to the user containing
  606.  
  607. any diagnostics which the message transport system produced along with a copy
  608.  
  609. of the message.  Later, the draft may be re-edited by entering ``comp -use''        .
  610.  
  611.  
  612.         A relatively new feature of MH is the ability to use a folder to store multiple
  613.  
  614. drafts.  These drafts are kept in an ordinary MH folder, and may be operated upon
  615.  
  616. by MH commands.  To enable this feature, the MH user selects a folder-name for
  617.  
  618. the draft-folder, and creates an entry in the .mh_profile    :
  619.  
  620.  
  621.            Draft-Folder: +foldername
  622.  
  623.  
  624. From this point on, when a message is composed, the draft will be created as a
  625.  
  626. message in that folder, instead of using the draft   file in the user's MH directory.
  627.  
  628. Unfortunately, if posting problems occur on a message which has been push'd, it
  629.  
  630. may be difficult to re-edit the draft with ``comp -use''        .  This might be the case
  631.  
  632. if the user had started composing another message, while that first draft was being
  633.  
  634. posted.  In  that  event,  the  current-message  in  the  draft-folder  would  no  longer
  635.  
  636. point to the failed draft.
  637.  
  638.  
  639.         There is a solution for this problem, however.  By default, push assumes the
  640.  
  641. `-forward'        option,  which  says  that  if  the  message  draft  fails  to  be  posted,  it
  642.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              8
  643.  
  644.  
  645. should be forwarded back to the user in the error report which push generates.
  646.  
  647. The failed draft may then be extracted with the burst program (discussed later).
  648.  
  649.  
  650. BBoards
  651.  
  652.         MH has a convenient interface to the UCI BBoards facility[MRose84a].2  This
  653.  
  654. facility  permits  the  efficient  distribution  of  interest  group  messages  on  a  single
  655.  
  656. host, to a group of hosts under a single administration, and to the ARPA Internet
  657.  
  658. community.
  659.  
  660.  
  661.         Although most readers are probably familiar with the concept of an interest
  662.  
  663. group in the Internet context, a brief description is now given.  Observant readers
  664.  
  665. will notice that the distributed nature of the "network news" (a.k.a. USENET)
  666.  
  667. tends to avoid many of the problems described below.
  668.  
  669.  
  670.         Described simply, an interest group is composed of a number of subscribers
  671.  
  672. with a common interest.  These subscribers post mail to a single address, known
  673.  
  674. as the distribution address (e.g., MH-Workers@UCI. From this distribution address,
  675.  
  676. a copy of the message is sent to each subscriber.  Each group has a moderator,
  677.  
  678. who is the person that runs the group.  This moderator can usually be reached at
  679.  
  680. a special address, known as the request address (e.g., MH-Workers-Request@UCI).
  681.  
  682. Usually,  the  responsibilities  of  the  moderator  are  quite  simple,  since  the  mail
  683.  
  684. system handles distribution to subscribers automatically.  In some interest groups,
  685.  
  686. instead of each separate message being distributed directly to subscribers, a batch
  687.  
  688. of (hopefully related) messages are put into a digest format by the moderator and
  689.  
  690. then sent to the subscribers.  (This is similar to a newsletter format.)  Although
  691.  
  692. this requires more work on the part of the moderator and introduces delays, such
  693.  
  694. groups tend to be better organized.
  695.  
  696.  
  697.         Unfortunately, some problems arise with the scheme outlined above.  First,
  698.  
  699. if two users on the same host subscribe to the same interest group, two copies of
  700.  
  701. the message are delivered.  This is wasteful of both processor and disk resources at
  702.  
  703. that host.
  704.  
  705.  
  706.         Second, some groups carry a lot of traffic.  Although subscription to a group
  707.  
  708. does indicate interest on the part of a subscriber, it is usually not interesting to get
  709.  
  710. 50 or so messages delivered each day to the user's private maildrop, interspersed
  711.  
  712. with personal mail,  which is likely to be of a much more important and timely
  713.  
  714. nature.
  715.  
  716.  
  717.         Third, if a subscriber's address in a distribution list becomes "bad" somehow
  718.  
  719. and causes failed mail to be returned, the originator of the message is normally
  720.  
  721. notified.  It is not uncommon for a large list to have several bogus addresses.  This
  722.  
  723. results in the originator being flooded with "error messages" from mailers across
  724.  
  725.  
  726. _____________________________________
  727. 2  The UCI BBoards facility can run under either the MMDF or SendMail, or in a more restricted
  728.  
  729. form under stand-alone MH.
  730.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985              9
  731.  
  732.  
  733. the Internet stating that a given address on the list was bad.  Needless to say, the
  734.  
  735. originator usually does not care if the bogus addresses got a copy of the message
  736.  
  737. or not.  The originator is merely interested in posting a message to the group at
  738.  
  739. large.  On the other hand, the moderator of the group does care if there are bogus
  740.  
  741. addresses on the list, but ironically does not receive notification.
  742.  
  743.  
  744.         To solve these problems, the UCI BBoards facility introduces a new entity
  745.  
  746. into the picture:  a distribution channel.  All interest group mail is handled by the
  747.  
  748. special mail system component.  The distribution address for an interest-group
  749.  
  750. maps mail for that interest-group to the distribution channel, which then performs
  751.  
  752. several actions.  First, if local delivery is to be performed, a copy of the message is
  753.  
  754. placed in a global maildrop for the interest group with a timestamp and a unique
  755.  
  756. number.  Local users can read messages posted for the interest group by reading
  757.  
  758. this "public" maildrop.  Second, if further distribution is to take place, a copy of
  759.  
  760. the message is sent to the distribution address in such a way that if any of the
  761.  
  762. addresses are bogus, failure notices will be returned to the local maintainer of the
  763.  
  764. group address list, rather than the originator of the message.
  765.  
  766.  
  767.         This scheme has several advantages:  First, messages delivered to the local
  768.  
  769. host are processed and saved once in a globally accessible area.  The UCI BBoards
  770.  
  771. facility supports software which allows a user to query an interest group for new
  772.  
  773. messages and to read and process those messages in the MH-style.  Second, once
  774.  
  775. a host administrator subscribes to an interest group, each user may join or quit
  776.  
  777. the list's readership without contacting anyone.  Third, a hierarchical distribution
  778.  
  779. scheme can be constructed to reduce the amount of delivery effort.  Finally, errors
  780.  
  781. are prevented from propagating.  When an address on the distribution list goes
  782.  
  783. bad, the list moderator who is responsible for the address is notified.  If a local
  784.  
  785. moderator does not exist,  then the local PostMaster is notified (not the global
  786.  
  787. group moderator).
  788.  
  789.  
  790.         In addition to solving the problems outlined above, the UCI BBoards facility
  791.  
  792. supports several other capabilities.  BBoards may be automatically archived in
  793.  
  794. order  to  conserve  disk  space  and  reduce  processing  time  when  reading  current
  795.  
  796. items.   Also,  the  archives  can  be  separately  maintained  on  tape  for  access  by
  797.  
  798. interested researchers.
  799.  
  800.  
  801.         Special  alias  files  may  be  generated  which  allow  the  MH  user  to  shorten
  802.  
  803. address entry.  For example, instead of sending to SF-Lovers@Rutgers, a user of
  804.  
  805. MH usually sends to ``SF-Lovers''          and the MH aliasing facility automatically
  806.  
  807. makes the appropriate expansion in the headers of the outgoing message.  Hence,
  808.  
  809. the user need only know the name of an interest group and not its global network
  810.  
  811. address.
  812.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             10
  813.  
  814.  
  815.         Finally, the UCI BBoards facility supports private interest groups using the
  816.  
  817. UNIX  group  access  mechanism.  This  allows  a  group  of  people  on  the  same  or
  818.  
  819. different machines to conduct a private discussion.
  820.  
  821.  
  822.         The practical upshot of all this is that the UCI BBoards facility automates the
  823.  
  824. vast majority of BBoards handling from the point of view of both the PostMaster
  825.  
  826. and the user.
  827.  
  828.  
  829.         MH provides three programs to deal with interest groups.  The bbc program
  830.  
  831. is used to check on the status of one or more groups, and to optionally start an
  832.  
  833. MH shell on those groups which the user is interested in.  The bbl program can be
  834.  
  835. used to manually perform maintenance on a discussion group beyond the normal
  836.  
  837. automatic  capabilities  of  the  UCI  BBoards  facility.  Finally,  the  msh  program
  838.  
  839. implements  an  MH  shell  for  reading  BBoards,  in  which  nearly  all  of  the  MH
  840.  
  841. commands are implemented in a single program.
  842.  
  843.  
  844.         Observant  readers  may  note  that  the  use  of  msh  is  contrary  to  the  MH
  845.  
  846. philosophy of using relatively small, single-purpose programs.  Sadly, the authors
  847.  
  848. admit that this is true.  In an effort to minimize use of system resources however,
  849.  
  850. BBoards are kept in maildrop format instead of folders.3  Some research has gone
  851.  
  852. into overcoming this problem to restore MH's purity of purpose, but all solutions
  853.  
  854. proposed  to  date  are  either  unworkable  or  require  significant  recoding  of  MH's
  855.  
  856. internals.
  857.  
  858.  
  859. Bursting
  860.  
  861.         Internet interest group mail is often sent out in digest form.  The experienced
  862.  
  863. MH user may wish to deal with the digest messages on an individual basis, however.
  864.  
  865. The burst program allows the MH user to extract these digest messages, and store
  866.  
  867. each as an individual MH message.
  868.  
  869.  
  870.         Burst will also extract forwarded messages generated by forw (or the forwarded
  871.  
  872. message  in  the  error  report  generated  by  push,  as  described  above).  Although
  873.  
  874. burst cannot always decapsulate messages encapsulated by sites not running MH,
  875.  
  876. it adheres to the proposed standard described in [MRose85b].
  877.  
  878.  
  879.  
  880. _____________________________________
  881. 3  When the message transport system delivers a message to a user it stores it in a single file, called
  882.  
  883. a maildrop. Since many messages may be present in a single maildrop, (in theory) there is a unique
  884. string acting as a separator between messages in the maildrop.  Although this is convenient for
  885. storage of messages, it makes retrieval more difficult unless a separate index into the maildrop is
  886. kept. This latter approach is taken by the msg program available with MMDF-II and by msh as well.
  887.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             11
  888.  
  889.  
  890. Distributed Mail
  891.  
  892.         The  ARPA  Internet  community  consists  of  many  types  of  heterogeneous
  893.  
  894. nodes.  Some  hosts  are  large  mainframe  computers,  others  are  personal  work-
  895.  
  896. stations.  All  communicate  using  the  milstd  TCP/IP  protocol  suite[IP, TCP].
  897.  
  898. Messages which conform to the Standard for the Format of ARPA Internet Text
  899.  
  900. Messages[DCroc82] are exchanged using the Simple Mail Transfer Protocol[SMTP].
  901.  
  902.  
  903.         On smaller nodes in the ARPA Internet, it is often impractical to maintain
  904.  
  905. a message transport system (e.g., SendMail).  For example, a workstation may not
  906.  
  907. have sufficient resources (cycles, disk space) in order to permit an SMTP server
  908.  
  909. and associated local mail delivery system to be kept resident and continuously
  910.  
  911. running.  Furthermore, the workstation could be off-net for extended periods of
  912.  
  913. time.  Similarly, it may be expensive (or impossible) to keep a personal computer
  914.  
  915. interconnected to an IP-style network for long periods of time.  In other words, the
  916.  
  917. node is lacking the resource known as "connectivity".
  918.  
  919.  
  920.         Despite  this,  it  is  often  desirable  to  be  able  to  manage  mail  with  MH  on
  921.  
  922. these smaller nodes, and they often support a user agent to aid the tasks of mail
  923.  
  924. handling.  To solve this problem,  a network node which can support a message
  925.  
  926. transport  entity  (known  as  service  host)  offers  a  maildrop  service  to  these  less
  927.  
  928. endowed nodes (known as client hosts).  The Post Office Protocol[JReyn84] (POP)
  929.  
  930. is intended to permit a workstation to dynamically access a maildrop on a service
  931.  
  932. host to pick-up mail.4  The level of access includes the ability to determine the
  933.  
  934. number of messages in the maildrop and the size of each message, as well as to
  935.  
  936. retrieve and delete individual messages.  More sophisticated implementations of the
  937.  
  938. POP server are able to distinguish between the header and body portion of each
  939.  
  940. message, and send n lines of a message to the POP client.  This capability is useful
  941.  
  942. in thinly connected environments where conservation of bandwidth is important.
  943.  
  944. By utilizing a more intelligent POP client, a user may generate "scan listings" and
  945.  
  946. decide dynamically which messages are worth taking delivery on.  The philosophy
  947.  
  948. of the POP is to put intelligence in the POP clients and not the POP servers.
  949.  
  950.  
  951.         The current release of MH supports the above model fully.  A POP client
  952.  
  953. program is available to retrieve a maildrop from a POP service host.  In addition,
  954.  
  955. using  the  SMTP  configuration  for  delivery  in  MH  (either  in  conjunction  with
  956.  
  957. SendMail  or  the  MMDF),  a  user  is  able  to  specify  a  search-list  of  service  hosts
  958.  
  959. (and/or networks) to try to post mail.  Using this search-list, when an MH user
  960.  
  961. posts a draft,  the post program will attempt to establish an SMTP connection
  962.  
  963. with  each  host  in  the  search-list  to  post  the  message  until  it  succeeds.  Initial
  964.  
  965.  
  966. _____________________________________
  967. 4  Actually, there are three different descriptions of the POP. The first, cited in [JReyn84], was the
  968.  
  969. original description of the protocol, which suffered from certain problems. Since then, two alternate
  970. descriptions have been developed. The official revision of the POP[MButl85], and the revision of the
  971. POP which MH uses (which is documented in an internal memorandum in the MH release).  This
  972. paper considers the POP in the context of the MH release.
  973.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             12
  974.  
  975.  
  976. experimentation  using  the  POP  and  MH  in  a  local  network  environment  has
  977.  
  978. proved quite successful.
  979.  
  980.  
  981.  
  982. User Interface Issues in MH
  983.  
  984.         At this point, it is perhaps useful to take a step backwards and examine the
  985.  
  986. success and problems of MH's approach to user interfaces.
  987.  
  988.  
  989. Creeping Featurism
  990.  
  991.         A complaint often heard about systems which undergo substantial develop-
  992.  
  993. ment by many people over a number of years, is that more and more options are
  994.  
  995. introduced which add little to the functionality but greatly increase the amount of
  996.  
  997. information a user needs to know in order to get useful work done.  This is usually
  998.  
  999. referred to as creeping featurism.
  1000.  
  1001.  
  1002.         Unfortunately MH, having undergone six years of off-and-on development by
  1003.  
  1004. ten or so well-meaning programmers (the present authors included), suffers mightily
  1005.  
  1006. from this.  For example, the send command has twenty-five visible switches, and at
  1007.  
  1008. least nine hidden switches, for a total of thirty-four.  The poor user who types
  1009.  
  1010.  
  1011.            send -help
  1012.  
  1013.  
  1014. watches the options scroll off the screen (since the `-help'      switch also lists out
  1015.  
  1016. four other lines of information).5   The sad part is that all of these switches are
  1017.  
  1018. useful in one form or another.
  1019.  
  1020.  
  1021.         There are a lot of good things to be said for the "one program, one function"
  1022.  
  1023. philosophy of system design.  In the MH case, however, each program really does
  1024.  
  1025. only  one  mail  handling  activity  (with  a  few  minor  exceptions).   The  options
  1026.  
  1027. associated with each command are present to modify the program's behavior to
  1028.  
  1029. perform similar, but slightly different tasks.  In further defense of MH, note that
  1030.  
  1031. there are 32 MH commands at present, all performing different tasks.
  1032.  
  1033.  
  1034.         The problem with creeping featurism though, is that while the functionality
  1035.  
  1036. of the system increases sub-linearly, the complexity of the system increases linearly.
  1037.  
  1038. That is, although the number of switches that a program takes might double, it is
  1039.  
  1040. unlikely that the program's functionality or capabilities will double.
  1041.  
  1042.  
  1043.  
  1044. _____________________________________
  1045. 5  Recently, this was fixed by compressing the way in which switches are presented. The solution is
  1046.  
  1047. only temporary however, as send will no doubt acquire an endless number of switches in the years
  1048. to come.
  1049.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             13
  1050. _______________________________________________________________________________________________________________
  1051.  
  1052. To:
  1053. cc:
  1054. Bcc:
  1055. Fcc:  outbox
  1056. Fcc:
  1057. Subject:
  1058. Reply-To:
  1059. --------
  1060.  
  1061.  
  1062.                                                  Figure 2
  1063.  
  1064. ______________________________________________Draft_Skeleton___________________________________________________
  1065.  
  1066. _______________________________________________________________________________________________________________
  1067.  
  1068. To:  <reply-to_from>
  1069. cc:  <?to_cc><to>,<cc>
  1070. Fcc:  +outbox
  1071. Fcc:  <?fcc><fcc>
  1072. Subject:  <?subject>Re:  <subject>
  1073. In-reply-to:  <?date><?message-id>Your  message  of  <date>.
  1074.        <message-id>
  1075. In-reply-to:  <?date><!message-id>Your  message  of  <date>.
  1076. --------
  1077.  
  1078.  
  1079.                                                  Figure 3
  1080.  
  1081. _____________________________________________Reply_Template____________________________________________________
  1082.  
  1083.  
  1084.  
  1085. Templates versus Switches
  1086.  
  1087.         One  way  to  trim  the  explosion  of  available  options,  while  still  increasing
  1088.  
  1089. functionality, is to introduce options with a richer domain.  Hence, instead of using
  1090.  
  1091. options which take on or off forms or simple numeric or string values, the possible
  1092.  
  1093. values which an option might take on is given a large space.  There are several ways
  1094.  
  1095. that this might be accomplished.
  1096.  
  1097.  
  1098.         The comp,  dist,  and forw programs use draft skeletons (simple form fill-in
  1099.  
  1100. files) to construct the general format of the draft being composed.  An example of
  1101.  
  1102. a draft skeleton used for composing new messages (by comp) is shown in Figure 2.
  1103.  
  1104. The approach is to let the user specify (and later edit) both arbitrary headers of
  1105.  
  1106. draft and the body of the draft.  Note while most of the fields are empty, the first
  1107.  
  1108. ``Fcc:''       field already contains a value.  By using the simple prompting editor,
  1109.  
  1110. prompter, the user can speedily enter the headers of the message.  The prompter
  1111.  
  1112. program given the skeleton in Figure 2 would prompt the user for the contents
  1113.  
  1114. of each field, except for the second ``fcc:''     , which it would include verbatim.
  1115.  
  1116. It would then read the body of the message up to an end-of-file.  Naturally, the
  1117.  
  1118. MH user is free to use any editor to edit any part of the draft (headers or body).
  1119.  
  1120. This example demonstrates the flexibility achieved by not limiting what headers a
  1121.  
  1122. draft may contain (which most mail sending programs do), while still retaining the
  1123.  
  1124. simplicity of being able to treat the entire message draft as a UNIX file.
  1125.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             14
  1126. _______________________________________________________________________________________________________________
  1127.  
  1128. From:  <?me>Message  Agent  "<<me>>
  1129. To:  <reply-to_from>
  1130. Fcc:  +rcvtrip
  1131. Fcc:  <?fcc><fcc>
  1132. Subject:  <?subject>BEEP!  Re:  <subject>
  1133. Subject:  <!subject>BEEP!
  1134. In-reply-to:  <?date><?message-id>Your  message  of  <date>.
  1135.        <message-id>
  1136. In-reply-to:  <?date><!message-id>Your  message  of  <date>.
  1137. --------
  1138.  
  1139.  
  1140.       This  is  an  automatic  reply.   Feel  free  to  send  additional  mail,  as  only
  1141.       this  one  notice  will  be  generated.
  1142.  
  1143.  
  1144.       I  am  attending  the  USENIX  Summer  '85  conference  in  Portland,  Oregon.
  1145.       I  expect  to  be  reading  mail  again  on  the  16th  of  June.
  1146.  
  1147.  
  1148. /mtr
  1149.  
  1150.  
  1151.                                                  Figure 4
  1152.  
  1153. __________________________________The_tripcomps______Reply_Template____________________________________________
  1154.  
  1155.  
  1156.  
  1157.         Another  more  interesting  approach  is  used  by  the  repl  command,  which
  1158.  
  1159. constructs a draft in reply-to a previously received message.  Instead of adding
  1160.  
  1161. switches to indicate which fields of the draft should be derived from the message
  1162.  
  1163. being replied-to, and how they should be derived, a single option, the ability to
  1164.  
  1165. specify a template, was made available.  An example of a reply template is shown
  1166.  
  1167. in Figure 3.  Put simply,  based on the presence of certain fields in the message
  1168.  
  1169. being replied-to, and a few switches given by the user, using the reply template,
  1170.  
  1171. repl generates the reply draft automatically.
  1172.  
  1173.  
  1174.         This facility, for example, can be used to generate automatic replies.6  One
  1175.  
  1176. function  might  be  to  write  a  rcvtrip  shell  script  which  automatically  answered
  1177.  
  1178. messages when mail wasn't being read for a period of time (e.g., while attending a
  1179.  
  1180. conference).  An example of a reply template at the heart of such a script is shown
  1181.  
  1182. in Figure 4.
  1183.  
  1184.  
  1185.         Finally, another application might be to utilize the highly useful letter bomb
  1186.  
  1187. protocol.7  The important thing to note about this template is that it generates
  1188.  
  1189. not only the headers of the reply draft (with a creative ``Reply-to:''         address),
  1190.  
  1191. but the body as well.  Hence, the commands
  1192.  
  1193.  
  1194.            repl -form bombcomps -noedit ; rmm
  1195.  
  1196.  
  1197. _____________________________________
  1198. 6  MH supports the notion of a user-defined mail hook which is invoked each time a user receives
  1199.  
  1200. mail.
  1201. 7  The  authors  wish  to  credit  Ron  Natalie  of  the  Ballistics  Research  Laboratory  in  Aberdeen,
  1202.  
  1203. Maryland for formalizing the use of this protocol in the ARPA Internet community.
  1204.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             15
  1205. _______________________________________________________________________________________________________________
  1206.  
  1207. To:  <reply-to_from>
  1208. cc:  <?to_cc><to>,<cc>
  1209. Fcc:  +outbox
  1210. Fcc:  <?fcc><fcc>
  1211. Subject:  <?subject>Re:  <subject>
  1212. In-reply-to:  <?date><?message-id>Your  message  of  <date>.
  1213.        <message-id>
  1214. In-reply-to:  <?date><!message-id>Your  message  of  <date>.
  1215. Reply-To:  /dev/null
  1216. --------
  1217.  
  1218.  
  1219.                                    "
  1220.                                   *-XXX
  1221.                                    /    XX
  1222.                                            X
  1223.                                               X
  1224.                                                X
  1225.                                                X
  1226.                                                X
  1227.                                           IIIIIIIII
  1228.                                           IIIIIIIII
  1229.                                           IIIIIIIII
  1230.                                           IIIIIIIII
  1231.                                           XXXXXXXXX
  1232.                                 XXXXXXXXXXXXXXXXXXXXXXX
  1233.                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1234.                         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1235.                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1236.                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1237.                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1238.                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1239.               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1240.             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1241.             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1242.             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1243.               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1244.                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1245.                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1246.                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1247.                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1248.                         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1249.                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1250.                                 XXXXXXXXXXXXXXXXXXXXXXX
  1251.                                           XXXXXXXXX
  1252.  
  1253.  
  1254.                                                  Figure 5
  1255.  
  1256. _________________________________The_bombcomps________Reply_Template___________________________________________
  1257.  
  1258.  
  1259.  
  1260.            What now? push
  1261.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             16
  1262. _______________________________________________________________________________________________________________
  1263.  
  1264. width=80,length=0,overflowtext=,overflowoffset=10
  1265. Date:leftadjust,compress,compwidth=9
  1266. Subject:leftadjust,compress,compwidth=9
  1267. From:leftadjust,compress,compwidth=9
  1268. To:leftadjust,compress,compwidth=9
  1269. cc:leftadjust,compress,compwidth=9
  1270. Resent-Note:leftadjust,compwidth=9
  1271. :
  1272. body:nocomponent,overflowoffset=0
  1273.  
  1274.  
  1275.                                                  Figure 6
  1276.  
  1277. ____________________________________________Display_Template___________________________________________________
  1278.  
  1279.  
  1280.  
  1281. are very handy for dealing with disturbing mail in a straight-forward manner.  Of
  1282.  
  1283. course, repl could be linked to bomb in the user's bin/   directory and an appropriate
  1284.  
  1285. line could be added to the user's MH profile, in order to further shorten type-in.
  1286.  
  1287.  
  1288.         A variation on the reply template is the display template.  A display template,
  1289.  
  1290. as used by the mhl program, contains instructions on how to format a message.  In
  1291.  
  1292. addition to being used by show, et. al., the forw program can also use a display
  1293.  
  1294. template to format each message being forwarded.  Similarly, although repl uses a
  1295.  
  1296. reply template to construct the draft being composed, it also may use a display
  1297.  
  1298. template to format the body of the message being replied-to for enclosure in the
  1299.  
  1300. reply.  Furthermore, the post program may use a display template to format the
  1301.  
  1302. body of a blind-carbon-copy.  An example of a display template used for formatting
  1303.  
  1304. forwarded messages is shown in Figure 6.
  1305.  
  1306.  
  1307.         As with reply templates, display templates can offer a lot of functionality.
  1308.  
  1309. For example, the one line display template:
  1310.  
  1311.  
  1312.            body:nocomponent,overflowtext=,overflowoffset=0,width=10000
  1313.  
  1314.  
  1315. can be used to extract the body of a message, while ignoring the headers.  Hence,
  1316.  
  1317. if a shar archive arrived in the mail, a convenient way to unpack it, assuming the
  1318.  
  1319. above display template was called mhl.body     , would be:
  1320.  
  1321.  
  1322.            show -form mhl.body _ sh
  1323.  
  1324.  
  1325.  
  1326.         The biggest win with display templates, of course, is that all those annoying
  1327.  
  1328. header lines which mailers everywhere generate can be simply and easily filtered
  1329.  
  1330. out.
  1331.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             17
  1332.  
  1333.  
  1334. Modularity versus Monolithicity
  1335.  
  1336.         Since MH is a set of programs which perform separate tasks, as opposed to
  1337.  
  1338. being a single, monolithic program, the power of the shell is used directly to aid in
  1339.  
  1340. mail-handling.  One powerful capability which this design achieves is the ability to
  1341.  
  1342. extend the MH command set, by developing shell scripts which use the standard
  1343.  
  1344. MH programs to accomplish complicated or specialized tasks.
  1345.  
  1346.  
  1347.         For  example,  in  the  MH  distribution  there  is  a  shell  script  called  mpick
  1348.  
  1349. (shown in Figure 7) which tries to locate all the messages which pertain to a given
  1350.  
  1351. discussion, by looking at the ``Message-ID:''           and ``In-reply-to:''           headers,
  1352.  
  1353. to find matching message-ids.8
  1354.  
  1355.  
  1356.         Unfortunately, some parts of MH are somewhat monolithic.  An example of
  1357.  
  1358. this is the What  now?  prompt.  There are only a few options at this prompt, and
  1359.  
  1360. one cannot give a normal shell command.  Some MH users seem to feel that more
  1361.  
  1362. options should be added to the What  now?  prompt, such as an insert-file option.  It
  1363.  
  1364. was argued that just about any editor would allow you to insert a file, and another
  1365.  
  1366. What  now?  option was not needed.  These users persisted, however, so the problem
  1367.  
  1368. was solved, by writing a trivial shell script "editor" (see Figure 8) which could be
  1369.  
  1370. invoked by the edit option:
  1371.  
  1372.  
  1373.            What  now? edit append filename
  1374.  
  1375.  
  1376.  
  1377.         A better interface at this point is really needed, however.  One possibility is to
  1378.  
  1379. simply pass any unrecognized commands on to a shell for interpretation, supplying
  1380.  
  1381. the  path  name  of  the  draft  file  as  an  argument.  A  solution  which  shows  more
  1382.  
  1383. promise is to give you a sub-shell instead of the What  now?  prompt,  and setup
  1384.  
  1385. certain envariables so that the MH commands would act upon the draft   by default.
  1386.  
  1387. For example, show with no `msgs'     arguments would show the draft instead of the
  1388.  
  1389. current message.  This alternative has recently been implemented and is under
  1390.  
  1391. testing.
  1392.  
  1393.  
  1394.  
  1395. The MH Distribution
  1396.  
  1397.         The  mh.5  distribution  is  now  briefly  described,  both  in  terms  of  static
  1398.  
  1399. configuration methods and dynamic tailoring.  Appendix B describes the mechanics
  1400.  
  1401. of receiving an mh.5 distribution.
  1402.  
  1403.  
  1404.  
  1405. _____________________________________
  1406. 8  Note that the shell scripts included in the MH distribution are written for the Bourne shell, and
  1407.  
  1408. have a `:' as the first character of the first line, so they will be portable to all versions of UNIX, not
  1409. just those which support the Berkeley `# !' enhancement.
  1410.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             18
  1411. _______________________________________________________________________________________________________________
  1412.  
  1413. :  'mpick  -  relate  messages  /mtr'
  1414. PATH=:/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/lib/mh;  export  PATH
  1415. F=""  M=""  S=""
  1416.  
  1417.  
  1418. for  A  in  $*
  1419. do
  1420.       case  $A  in
  1421.            -*)       S="$S  $A"  ;;
  1422.  
  1423.  
  1424.            +*_@*)   case  $F  in
  1425.                            "")   F=$A  ;;
  1426.                            *)    echo  "mpick:  only  one  folder  at  a  time"  1>&2
  1427.                                   exit  1  ;;
  1428.                       esac  ;;
  1429.  
  1430.  
  1431.            *)        M="$M  $A"  ;;
  1432.       esac
  1433. done
  1434.  
  1435.  
  1436. S="$S  -sequence  hits  -list  -nozero"
  1437.  
  1438.  
  1439. if  mark  $F  all  -add  -sequence  hits;
  1440.       then  mark  $F  all  -delete  -sequence  hits;
  1441.       else  exit  1;
  1442. fi
  1443.  
  1444.  
  1445. for  A  in  $-M-cur"
  1446. do
  1447.       for  C  in  `mhpath  $F  $A`
  1448.       do
  1449.            if  [  -r  $C  ];
  1450.                 then
  1451.                       I=`mhl  -form  mhl.msgid  $C`;
  1452.                       case  $I  in
  1453.                            "")   echo  "no  message-id  in  message  `basename  $C`"  1>&2  ;;
  1454.                            *)    pick  --in-reply-to  "$I"  $S  ;;
  1455.                       esac
  1456.                 else
  1457.                       echo  "message  $A  doesn't  exist"  1>&2;  exit  1;
  1458.            fi
  1459.       done
  1460. done
  1461.  
  1462.  
  1463. exit  0
  1464.  
  1465.  
  1466.                                                  Figure 7
  1467.  
  1468. ____________________________________________The_mpick_Script___________________________________________________
  1469.  
  1470.  
  1471.  
  1472. Configurable MH
  1473.  
  1474.         The  MH  distribution  currently  runs  on  a  large  number  of  different  UNIX
  1475.  
  1476. versions, ranging from MicroSoft XENIX to Berkeley 4.2bsd.  All the code which
  1477.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             19
  1478. _______________________________________________________________________________________________________________
  1479.  
  1480. :  'append  -  stupid  append  editor  for  MH  -  /jlr'
  1481. case  $#  in
  1482.     1_2)  case  $#  in
  1483.                 1)  F=$1;  echo  -n  "Append  file:  "  1>&2;  read  A  ;;
  1484.                 2)  F=$2;  A=$1  ;;
  1485.            esac
  1486.            cat  $A  <  /dev/null  >>  $F  ;;
  1487.        *)  echo  "append:  arg  count"  1>&2  ;  exit  1  ;;
  1488. esac
  1489. exit
  1490.  
  1491.  
  1492.                                                  Figure 8
  1493.  
  1494. ___________________________________________The_append_Editor___________________________________________________
  1495.  
  1496. _______________________________________________________________________________________________________________
  1497.  
  1498. bin       /usr/local
  1499. bboards  on
  1500. editor   /usr/local/prompter
  1501. etc       /usr/local/lib/mh
  1502. mail      /usr/spool/mail
  1503. manuals  local
  1504. mts       sendmail/smtp
  1505. news      off
  1506. options  BSD42
  1507. options  MHE  NETWORK
  1508. options  UCI
  1509.  
  1510.  
  1511.                                                  Figure 9
  1512.  
  1513. ___________________________________Sample_MH_Configuration_File________________________________________________
  1514.  
  1515.  
  1516.  
  1517. is specific to a particular target environment is enabled via the C-preprocessor
  1518.  
  1519. ``# ifdef''       mechanism, so compilation under different versions of UNIX is trivial.
  1520.  
  1521. There are, however, a large number of compile-time options which may vary from
  1522.  
  1523. site to site, so an automated configuration method was needed.
  1524.  
  1525.  
  1526.         The MH-installer must create a configuration file,  which contains a list of
  1527.  
  1528. the compile-time options and the values which are desired for them.  Compile-time
  1529.  
  1530. options include the installation location for MH, what kind of message transport
  1531.  
  1532. system is to be used, and the default editor for the installation.  An example of
  1533.  
  1534. such a configuration file is shown in Figure 9.
  1535.  
  1536.  
  1537.         After creating this file (several examples are included in the distribution), the
  1538.  
  1539. installer runs the mhconfig program, which customizes the Makefile    s and some of
  1540.  
  1541. the programs, for that site's particular installation.  No hand-editing of any source
  1542.  
  1543. code should be necessary, under normal circumstances.
  1544.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             20
  1545. _______________________________________________________________________________________________________________
  1546.  
  1547. mmdfldir:          /usr/spool/mail
  1548. mmdflfil:
  1549. mmdelim1:          "001"001"001"001"n
  1550. mmdelim2:          "001"001"001"001"n
  1551. mmailid:           0
  1552. lockstyle:        0
  1553. lockldir:
  1554.  
  1555.  
  1556. hostable:          /usr/local/lib/mh/hosts
  1557. servers:           localhost  "01localnet
  1558.  
  1559.  
  1560.                                                 Figure 10
  1561.  
  1562. _______________________________________Sample_MTS_Tailor_File__________________________________________________
  1563.  
  1564.  
  1565.  
  1566. Interface to the Message Transport System
  1567.  
  1568.         MH will run with a number of message transport systems, including SendMail,
  1569.  
  1570. MMDF-II, and a small stand-alone system.  One flexible method of posting mail
  1571.  
  1572. is through an SMTP connection.  There are a couple of major wins in using this
  1573.  
  1574. configuration:  First, none of the MH programs need to know where the interface
  1575.  
  1576. programs to the message transport system are located, which makes them easier
  1577.  
  1578. to move between systems.  Second, mail can be posted on relay hosts, and the local
  1579.  
  1580. host of an MH user may not need a message transport system at all (as alluded to
  1581.  
  1582. in the preceeding discussion on the POP).
  1583.  
  1584.  
  1585.         Those parts of MH which interact with the local message transport agent
  1586.  
  1587. read additional tailoring information when they start.9  This information includes
  1588.  
  1589. the location of standard and alternate maildrops, maildrop delimiter strings, the
  1590.  
  1591. locking  directory  and  locking  style,  and  other  tailoring  information  specific  for
  1592.  
  1593. the particular message transport system in use (e.g., the default server search-list
  1594.  
  1595. when mail is posted with the SMTP). In most cases, by using a tailor file, each site
  1596.  
  1597. running a similar MH configuration is able to simply transfer MH binaries between
  1598.  
  1599. hosts.  An example of such a tailor file is shown in Figure 10.
  1600.  
  1601.  
  1602.         A  continuing  question  which  is  often  raised  is  how  intelligent  should  user
  1603.  
  1604. agents (like MH and UCB Mail ) be with respect to the environment in which they
  1605.  
  1606. operate.  At present, MH likes to determine the official hostnames for addresses
  1607.  
  1608. when posting mail.  Many argue that this is improper or unnecessary behavior
  1609.  
  1610. for  a  user  agent,  and  that  the  local  message  transport  agent  should  handle
  1611.  
  1612. these  functions.   Unfortunately,  this  implies  that  the  message  transport  agent
  1613.  
  1614. should munge headers when mail is posted to remove local host aliases and only
  1615.  
  1616. permit address fields with fully-qualified addresses.  Sadly, neither SendMail nor
  1617.  
  1618. MMDF-II  really  gets  this  right  (flames  to  /dev/null     please).   The  current  MH
  1619.  
  1620. maintainers believe that the resolution of host aliases to official names should be
  1621.  
  1622. a well-supported interface with the local message transport agent.  However,  to
  1623.  
  1624. _____________________________________
  1625. 9  This simple facility is based on a more extensive tailoring capability found in MMDF-II.
  1626.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             21
  1627.  
  1628.  
  1629. provide equal time to those who hold opposite views, MH supports a configuration
  1630.  
  1631. option called ``DUMB''       which disables MH's attempts to resolve addresses into
  1632.  
  1633. fully-qualified strings.
  1634.  
  1635.  
  1636.  
  1637. Concluding Remarks
  1638.  
  1639.         While MH has undergone significant development since the original Rand
  1640.  
  1641. release, the authors have tried to keep the fundamental concepts of MH unchanged.
  1642.  
  1643. The authors have continually had to battle against well-meaning MH users who
  1644.  
  1645. wanted to make MH more like other (less powerful) user agents.  More and more
  1646.  
  1647. "features"  were  often  suggested  for  MH,  usually  at  the  expense  of  making  MH
  1648.  
  1649. less  general,  and  more  specific.  In  nearly  all  cases,  the  "features"  which  these
  1650.  
  1651. users wanted were already present in MH in a slightly different form, or could be
  1652.  
  1653. realized by simply writing a short shell script.  A classic example is the repeated
  1654.  
  1655. requests  by  one  user  to  have  dist  take  a  list  of  messages  rather  than  a  single
  1656.  
  1657. message and distribute each one of them in turn.  A simple shell script which called
  1658.  
  1659. dist repeatedly, perhaps with "canned" arguments so the user typed in addressing
  1660.  
  1661. information only once, would easily meet this request.
  1662.  
  1663.  
  1664.         A number of MH comands have a large number of options.  When adding
  1665.  
  1666. options, the authors have tried to make the options general, while still accomodating
  1667.  
  1668. the  requests  of  specific  users.   An  example  of  a  specific  request  which  was
  1669.  
  1670. implemented  as  a  general  feature  is  the  ``Previous-Sequence''              profile  entry
  1671.  
  1672. (mentioned above).  If you use this profile entry, every MH command is forced to
  1673.  
  1674. write out context    changes, making every command somewhat slower.  Since only a
  1675.  
  1676. few users wanted this capability, it was implemented in such a way that users who
  1677.  
  1678. didn't want it, didn't have to pay the cost of slowing down every MH command.
  1679.  
  1680.  
  1681.         MH has a powerful tailoring capability provided by the .mh_profile    .  Using
  1682.  
  1683. profile entries, users may customize their own environment without affecting others.
  1684.  
  1685. Novice users often take advantage of the MH-tailoring capabilities to try to make
  1686.  
  1687. MH work similarly to other user agents they've used.  This has the advantage of
  1688.  
  1689. allowing them to quickly begin using MH to handle their mail.  However, since these
  1690.  
  1691. novice users don't take advantange of all the capabilities of MH, they frequently
  1692.  
  1693. will complain about things they think can't be done with MH, or could be done
  1694.  
  1695. "better" some other way.  Fortunately,  as these users become more experienced
  1696.  
  1697. with  both  MH  and  UNIX,  they  can  modify  their  environment  to  take  better
  1698.  
  1699. advantage of all of MH's capabilities.  Novice MH users who see features lacking
  1700.  
  1701. are encouraged to take a better look at what MH can do, instead of trying to make
  1702.  
  1703. MH into something it isn't.  This may sound rather inflammatory, but it would
  1704.  
  1705. really be a much nicer world for us all if users of software systems would read the
  1706.  
  1707. manual prior to asking questions.
  1708.  
  1709.  
  1710.         For  a  moment,  let's  consider  the  evolution  of  one  MH  feature  which  has
  1711.  
  1712. proved  itself  to  be  very  useful.  As  users  began  employing  MH  to  handle  their
  1713.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             22
  1714.  
  1715.  
  1716. mail, the number of messages that could be processed in a given amount of time
  1717.  
  1718. increased greatly.  As the volume of messages increased however, it became clear
  1719.  
  1720. that  some  MH  operations  were  too  slow,  in  particular  the  interaction  with  the
  1721.  
  1722. (slow) message transport system.  To overcome this problem, the push option was
  1723.  
  1724. added at the What  now?  prompt.  Originally, this option was hidden from novice
  1725.  
  1726. users and did little more than send the message in the background:  any output
  1727.  
  1728. generated by the background send process would be printed asyncronously on the
  1729.  
  1730. terminal.  If a message failed posting with the message transport system, it would
  1731.  
  1732. simply be left in the draft   file.
  1733.  
  1734.  
  1735.         Gradually, other features were added to push.  Since users wanted to be able
  1736.  
  1737. to send more than one draft at a time,  push was changed to optionally rename
  1738.  
  1739. the draft file before posting it.  (This is what the hidden `-unique'       option does.)
  1740.  
  1741. Having message transport system diagnostics written asyncronously on the user's
  1742.  
  1743. terminal was annoying, so push was made to intercept these diagnostics, and mail
  1744.  
  1745. the user a report containing them.  Although the diagnostic report mailed back by
  1746.  
  1747. push contains the name of the draft which failed, a useful added feature was the
  1748.  
  1749. ability to have push include the failed draft as well.  Eventually, the draft-folder
  1750.  
  1751. mechanism  was  implemented  to  make  handling  multiple  message  drafts  much
  1752.  
  1753. easier.
  1754.  
  1755.  
  1756. TODO
  1757.  
  1758.         There are, no doubt, a number of improvements which could be made to MH.
  1759.  
  1760. At the present time, what further development should MH suffer?  Although not
  1761.  
  1762. by any means inclusive, here's a list:
  1763.  
  1764.  
  1765.            1.  Performance Enhancements
  1766.  
  1767.                Hardware  gets  faster  all  the  time,  but  people  always  complain  that
  1768.  
  1769.                software is too slow.  Owing to its user interface style, MH is somewhat
  1770.  
  1771.                slower than monolithic programs like UCB Mail.  It would be nice if MH
  1772.  
  1773.                could be tuned or accelerated somehow.
  1774.  
  1775.  
  1776.            2.  Port to System 5
  1777.  
  1778.                MH  runs  on  4.2bsd  UNIX  and  Version  7  variants.  It  should  not  be
  1779.  
  1780.                difficult to port MH to a SYS5 environment.  This should significantly
  1781.  
  1782.                increase the number of hosts on which MH can run.  The authors, lacking
  1783.  
  1784.                a SYS5 machine (and experience with SYS5) to perform the port, are
  1785.  
  1786.                actively seeking a System 5 guru to attempt this feat.
  1787.  
  1788.  
  1789.            3.  Interface to the Network News
  1790.  
  1791.                Not all sites that run MH are in the ARPA Internet, and as such the
  1792.  
  1793.                UCI BBoards facility may not be of much use to them.  A good MH
  1794.  
  1795.                interface to the network news would allow users on hosts with a news
  1796.  
  1797.                feed to employ the same interface for reading and sending both mail
  1798.  
  1799.                and news.
  1800. Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             23
  1801.  
  1802.  
  1803.          4.  Programmed Instruction for Beginners
  1804.  
  1805.              The complexity of MH is often intimidating to new users.  It would be
  1806.  
  1807.              nice to develop a set of learn lessons for those users who don't like man
  1808.  
  1809.              pages and non-interactive tutorials.
  1810.  
  1811.  
  1812.          5.  Message List Expansion
  1813.  
  1814.              At  present,  when  a  list  of  messages  is  given  to  an  MH  command,  it
  1815.  
  1816.              expands the list and processes each message in numerical order rather
  1817.  
  1818.              than the order in which the messages were given (e.g., ``show 2 1''
  1819.  
  1820.              show s message 1 and then message 2).  It would be nice if MH processed
  1821.  
  1822.              messages in the order they were given.
  1823.  
  1824.  
  1825.          6.  Context Changes
  1826.  
  1827.              In nearly all cases, an MH command does not write out context changes
  1828.  
  1829.              until it is about to exit successfully.  There is some controversy as to
  1830.  
  1831.              whether this is the correct behavior in all cases.  Some argue that once
  1832.  
  1833.              an MH command has fully parsed its argument list, the context should
  1834.  
  1835.              be updated.
  1836.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             24
  1837.  
  1838.  
  1839.                                                References
  1840.  
  1841.  
  1842.  
  1843. [DCome83]        D.  Comer.   The  Computer  Science  Research  Network  CSnet:  A
  1844.  
  1845.                  History  and  Status  Report.  Communications  of  the  ACM  26,  10
  1846.  
  1847.                  (October, 1983), 747-753.
  1848.  
  1849.  
  1850.  
  1851. [DCroc79]        D.H.  Crocker,  E.S.  Szurkowski,  D.J.  Farber.   An  Internetwork
  1852.  
  1853.                  Memo  Distribution  Facility  _  MMDF.  Appearing  in  Proceedings,
  1854.  
  1855.                  Sixth Data Communications Symposium, Asilomar, 1979, pp. 18-25.
  1856.  
  1857.  
  1858.  
  1859. [DCroc82]        D.H.  Crocker.   Standard  for  the  Format  of  ARPA  Internet  Text
  1860.  
  1861.                  Messages.  Request  for  Comments  822.  ARPA  Internet  Network
  1862.  
  1863.                  Information Center (NIC), SRI International (August, 1982).
  1864.  
  1865.  
  1866.  
  1867. [DKing84]        D.P.  Kingston,  III.   MMDFII:  A  Technical  Review.  Appearing  in
  1868.  
  1869.                  Proceedings  Usenix  Summer  '84  Conference,  Salt  Lake  City,  Utah,
  1870.  
  1871.                  1984, pp. 32-41.
  1872.  
  1873.  
  1874.  
  1875. [EAllm83]        E.  Allman.    SENDMAIL  _  An  Internetwork  Mail  Router.
  1876.  
  1877.                  Britton-Lee, Inc., Berkeley, California (July, 1983).
  1878.  
  1879.  
  1880.  
  1881. [IP]             Internet  Protocol.  Request  for  Comments  791  (milstd  1777).
  1882.  
  1883.                  Appearing in Internet Protocol Transition Workbook, ARPA Internet
  1884.  
  1885.                  Network Information Center (NIC), SRI International, 1981.
  1886.  
  1887.  
  1888.  
  1889. [JReyn84]        J.K.  Reynolds.   Post  Office  Protocol.  Request  for  Comments  918.
  1890.  
  1891.                  ARPA Internet Network Information Center (NIC), SRI International
  1892.  
  1893.                  (October, 1984).
  1894.  
  1895.  
  1896.  
  1897. [MButl85]        M. Butler,  J.B. Postel,  et. al.   Post Office Protocol - Version 2.
  1898.  
  1899.                  Request  for  Comments  937.  ARPA  Internet  Network  Information
  1900.  
  1901.                  Center (NIC), SRI International (February, 1985).
  1902.  
  1903.  
  1904.  
  1905. [MRose84a]       M.T.  Rose.   The  Rand  MH  Message  Handling  System:  The  UCI
  1906.  
  1907.                  BBoards Facility. Department of Computer and Information Sciences,
  1908.  
  1909.                  University of Delaware (October, 1984).
  1910.  
  1911.  
  1912.  
  1913. [MRose85b]       M.T.  Rose,  E.A.  Stefferud.   Proposed  Standard  for  Message
  1914.  
  1915.                  Encapsulation. Request for Comments 934. ARPA Internet Network
  1916.  
  1917.                  Information Center (NIC), SRI International (January, 1985).
  1918.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             25
  1919.  
  1920.  
  1921. [SMTP]           Simple  Mail  Transfer  Protocol.  Request  for  Comments  821.  ARPA
  1922.  
  1923.                  Internet  Network  Information  Center  (NIC),  SRI  International
  1924.  
  1925.                  (August, 1982).
  1926.  
  1927.  
  1928.  
  1929. [TCP]            Transmission Control Protocol. Request for Comments 793 (milstd
  1930.  
  1931.                  1778). Appearing in Internet Protocol Transition Workbook, ARPA
  1932.  
  1933.                  Internet Network Information Center (NIC), SRI International, 1981.
  1934.  
  1935.  
  1936.                                                      Appendix  A
  1937.  
  1938.                                                   MH  Commands
  1939.  
  1940.  
  1941.  
  1942.                MH is composed of several UNIX programs, which in theory are fairly simple
  1943.  
  1944.        and single-purposed.  These commands are functionally grouped below:
  1945.  
  1946.  
  1947.                                                     Composing_Mail_________
  1948.  
  1949.      comp:     compose a message
  1950.  
  1951.                A program to originate a message.  Usually, a special prompting editor front-
  1952.  
  1953.                end, prompter, is used to fill-in a composition template with the addressees
  1954.  
  1955.                of the message, subject, and so forth.
  1956.  
  1957.  
  1958.        dist :  redistribute a message to additional addresses
  1959.  
  1960.                A program that re-enters a message previously received by the user into the
  1961.  
  1962.                message transport system.  Only new addresses are added; the body of the
  1963.  
  1964.                message is not changed in any way.
  1965.  
  1966.  
  1967.       forw :   forward messages
  1968.  
  1969.                A program that encapsulates one or more messages in a new message draft.
  1970.  
  1971.                In addition, the user may add initial and/or closing comments.
  1972.  
  1973.  
  1974.        repl :  reply to a message
  1975.  
  1976.                A program that constructs a reply to a message using a reply template.  The
  1977.  
  1978.                template mechanism has sufficient generality to permit the user to "program"
  1979.  
  1980.                the  form  of  the  reply  draft  based  on  the  contents  of  the  message  being
  1981.  
  1982.                replied-to.
  1983.  
  1984.  
  1985.       send :   send a message
  1986.  
  1987.                A  program  that  posts  a  draft  with  the  message  transport  system.   The
  1988.  
  1989.                send program is usually invoked by one of the four preceding programs, and
  1990.  
  1991.                performs simple front-end pre-processing prior to invoking the post program.
  1992.  
  1993.                For  example,  if  invoked  in  push'd  mode,  send  will  immediately  relinquish
  1994.  
  1995.                control of the user's terminal and post the message in the background.  If
  1996.  
  1997.                the posting fails, send will send back a failure notice to the user.  If the user
  1998.  
  1999.                had push'd the sending of the draft, then by default the draft being sent is
  2000.  
  2001.                encapsulated in the failure notice.  This permits easy burst'ing of the failure
  2002.  
  2003.                notice to retrieve the original draft.  Otherwise, if the posting was successful,
  2004.  
  2005.                the draft is marked as having been sent.
  2006.  
  2007.  
  2008. whatnow :      prompting front-end for send
  2009.  
  2010.                A program which is called by comp, et.  al., after the initial draft has been
  2011.  
  2012.  
  2013.  
  2014.                                                              26
  2015.            Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             27
  2016.  
  2017.  
  2018.                  generated.  The  MH  user  can  specify  a  different  whatnow  program,  which
  2019.  
  2020.                  yields considerable extensibility.
  2021.  
  2022.  
  2023.       whom:      report to whom a message would go
  2024.  
  2025.                  A program which examines the addresses of the draft and expands all user-
  2026.  
  2027.                  defined aliases contained therein.  Optionally,  whom may actually interact
  2028.  
  2029.                  with  the  message  transport  system  to  determine  the  validity  of  the  final
  2030.  
  2031.                  addresses.  This program is also usually invoked by comp, et. al.
  2032.  
  2033.  
  2034.                                                         Posting_Mail______
  2035.  
  2036.            ali : list mail aliases
  2037.  
  2038.                  A simple front-end to the MH aliasing mechanism.
  2039.  
  2040.  
  2041.            ap:   parse addresses 822-style
  2042.  
  2043.                  A  useful  debugging  tool  for  PostMasters  who  wish  to  examine  how  MH
  2044.  
  2045.                  interprets an Internet address.
  2046.  
  2047.  
  2048.     conflict :   search for alias/password conflicts
  2049.  
  2050.                  Another program used by system administrators to check the consistency of
  2051.  
  2052.                  MH alias files, and portions of the local message transport agent.
  2053.  
  2054.  
  2055. install-mh:      initialize the MH environment
  2056.  
  2057.                  A program which is automatically executed the first time a user issues an MH
  2058.  
  2059.                  command.  This program performs once-only initialization of the user's MH
  2060.  
  2061.                  environment.
  2062.  
  2063.  
  2064.     mhmail :     send or read mail
  2065.  
  2066.                  A simple program generally used by other programs to generate messages.
  2067.  
  2068.                  The mhmail command is similar in purpose to the old BellMail program.
  2069.  
  2070.  
  2071.          post :  deliver a message
  2072.  
  2073.                  A  complex  MH  back-end  that  interacts  with  the  local  message  transport
  2074.  
  2075.                  agent to enter messages through the posting slot.  (See the description of send
  2076.  
  2077.                  above).
  2078.  
  2079.  
  2080.                                                         Reading_Mail_______
  2081.  
  2082.           inc:   incorporate new mail
  2083.  
  2084.                  A program that interacts with the local message transport agent to retrieve
  2085.  
  2086.                  messages from the user's maildrop.
  2087.  
  2088.  
  2089.     msgchk :     check for waiting mail
  2090.  
  2091.                  A program which reports the status of mail waiting in the user's maildrop.
  2092.  
  2093.  
  2094.         show :   show (list) messages
  2095.  
  2096.                  A program which lists messages to its standard output (usually the user's
  2097.  
  2098.                  terminal), possibly invoking another program to do the actual listing.  Most
  2099.  
  2100.                  users of MH have show automatically call the mhl program to format the
  2101.       Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             28
  2102.  
  2103.  
  2104.             message.   The  next  and  prev  programs  are  simply  ``show next''         and
  2105.  
  2106.             ``show prev''        , respectively.
  2107.  
  2108.  
  2109.     mhl :   produce formatted listings of MH messages
  2110.  
  2111.             A program which displays a message as directed by a template.  This permits
  2112.  
  2113.             the user to filter out uninteresting headers and re-arrange other headers to a
  2114.  
  2115.             particular preference.  In addition to being invoked by show, the mhl program
  2116.  
  2117.             is optionally also invoked by forw to format each message being forwarded;
  2118.  
  2119.             invoked  by  repl  to  format  the  body  of  a  message  being  replied-to,  if  that
  2120.  
  2121.             message is being included in the reply draft; and, invoked by post to format
  2122.  
  2123.             a message being sent as a blind-carbon-copy.
  2124.  
  2125.  
  2126.    rmm:     remove messages
  2127.  
  2128.             A program that removes messages from an MH folder, optionally running a
  2129.  
  2130.             user-defined program instead of deleting them.  If no program is given, the
  2131.  
  2132.             messages are "softly" removed, so they may possibly be recovered later.
  2133.  
  2134.  
  2135.    scan:    produce a one-line-per-message scan listing
  2136.  
  2137.             A program that generates a scan listing for messages.  Each line of the listing
  2138.  
  2139.             contains date, source, subject, and possibly the initial body of the message.
  2140.  
  2141.  
  2142.                                                  Folder_Handling_______
  2143.  
  2144.  folder :   set/list current folder/message
  2145.  
  2146.             A program used to list information concerning the current folder, or set the
  2147.  
  2148.             current folder and/or message.
  2149.  
  2150.  
  2151. folders :   list all folders
  2152.  
  2153.             A program to list information on all folders (actually, just a special case of
  2154.  
  2155.             the folder command).  Since the MH folder structure may be recursive, the
  2156.  
  2157.             user can indicate that folders should recursively examine all folders.
  2158.  
  2159.  
  2160.    refile:  file message(s) in (an)other folder(s)
  2161.  
  2162.             A program to move (or copy) messages from a source folder to one or more
  2163.  
  2164.             destination folders.
  2165.  
  2166.  
  2167.     rmf :   remove folder
  2168.  
  2169.             A program that deletes a folder and all messages therein.
  2170.  
  2171.  
  2172.                                                 Message_Selection_______
  2173.  
  2174.    anno:    annotate messages
  2175.  
  2176.             A  program  to  arbitrarily  annotate  messages.  If  the  user  so  desires,  after
  2177.  
  2178.             distributing,  forwarding,  or  replying-to  a  message,  MH  will  automatically
  2179.  
  2180.             attach an annotation to the original message indicating the date and addresses.
  2181.  
  2182.  
  2183.   mark :    mark messages
  2184.  
  2185.             A program to manipulate user-defined sequences (lists of messages).  Usually,
  2186.  
  2187.             mark is not employed directly by the MH user.
  2188.        Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             29
  2189.  
  2190.  
  2191.      pick :  select messages by content
  2192.  
  2193.              A  program  to  examine  a  list  of  messages  and  choose  those  which  meet
  2194.  
  2195.              a  particular  selection  criterion.  The  pick  program  is  often  used  in  UNIX
  2196.  
  2197.              back-quoted operations to pass message sequences to other MH commands.
  2198.  
  2199.  
  2200.   sortm:     sort messages
  2201.  
  2202.              A program to sort a list of messages according to the date given in a particular
  2203.  
  2204.              field.
  2205.  
  2206.  
  2207.                                            Distribution_List_Handling__________
  2208.  
  2209.       bbc:   check on BBoards
  2210.  
  2211.              A  front-end  to  run  msh  on  a  list  of  distribution  lists  which  the  user  isn't
  2212.  
  2213.              current on.
  2214.  
  2215.  
  2216.       bbl :  manage a BBoard
  2217.  
  2218.              A  (depreciated)  program  used  to  manually  manage  the  local  archives  of
  2219.  
  2220.              a  distribution  list.  These  functions  (archiving,  expunging)  are  performed
  2221.  
  2222.              automatically by MH.
  2223.  
  2224.  
  2225.    burst :   explode digests into messages
  2226.  
  2227.              A program used to decapsulate messages from ARPA Internet digests.  In
  2228.  
  2229.              addition,  messages  which  have  been  encapsulated  during  forwarding  (i.e.,
  2230.  
  2231.              with forw ) can also be decapsulated using burst.10
  2232.  
  2233.  
  2234.      msh:    MH shell (and BBoard reader)
  2235.  
  2236.              A  monolithic  program  used  to  implement  MH  commands  on  messages
  2237.  
  2238.              arranged in a single file (maildrop format).  Useful since distribution lists are
  2239.  
  2240.              kept in this format to minimize consumption of system resources.
  2241.  
  2242.  
  2243.     pack :   compress a folder into a single file
  2244.  
  2245.              A program which takes messages stored in MH format and places them in a
  2246.  
  2247.              single file (using the same format known by msh).
  2248.  
  2249.  
  2250.                                       Interface_to_the_UNIX_File_System_____________
  2251.  
  2252. mhpath:      print full pathnames of MH messages and folders
  2253.  
  2254.              A program which maps MH-style names into the UNIX file naming convention.
  2255.  
  2256.  
  2257.  
  2258.      _____________________________________
  2259.     10  Similarly, blind-carbon-copies may be decapsulated, though only socially mature users should do
  2260.  
  2261.      so.
  2262.  
  2263.  
  2264.                                               Appendix  B
  2265.  
  2266.                                      Distribution  Mechanics
  2267.  
  2268.  
  2269.  
  2270.         The mh.5 distribution is available in two forms:
  2271.  
  2272.  
  2273.            1.  Anonymous FTP
  2274.  
  2275.                If  you  can  FTP  to  the  ARPA  Internet,  use  anonymous  FTP  to  the
  2276.  
  2277.                ARPAnet host UDel-Huey [10.2.0.96] and retrieve the file portal/mh.5-
  2278.  
  2279.                tar.  This is a tar image of size 2.1 MB (approximately).
  2280.  
  2281.  
  2282.            2.  9-track tape, 1600 bpi, tar format
  2283.  
  2284.                Otherwise, you can send $ 50.00 to the address below.  This covers the
  2285.  
  2286.                cost of a magtape,  handling,  and shipping.  In addition,  you'll get a
  2287.  
  2288.                laser-printed hard-copy of the MH documentation.  The documentation
  2289.  
  2290.                includes installation guide, MH Tutorial, MH User's Manual, changes
  2291.  
  2292.                document (from mh.4 to mh.5), and BBoards Manual.
  2293.  
  2294.  
  2295.                If you go with this option, be sure to include your USPS address with
  2296.  
  2297.                your check.  Checks should be made payable to
  2298.  
  2299.  
  2300.                                  Regents of the University of California
  2301.  
  2302.  
  2303.                It's also a good idea (though not mandatory) to send a computer mail
  2304.  
  2305.                message to Bug-MH@UCI when you send your check via USPS to ensure
  2306.  
  2307.                minimal turn-around time.  The distribution address is:
  2308.  
  2309.  
  2310.                    Support Group
  2311.  
  2312.                    Attn:  MH Distribution
  2313.  
  2314.                    Department of Information and Computer Science
  2315.  
  2316.                    University of California, Irvine
  2317.  
  2318.                    Irvine, CA 92717
  2319.  
  2320.  
  2321.  
  2322.                    714/856-6852
  2323.  
  2324.  
  2325.  
  2326.                Sadly, if you just want the hard-copies of the documentation, you still
  2327.  
  2328.                have to pay the $ 50.00.  The tar image has the documentation source
  2329.  
  2330.                (the man is in ROFF format, but the rest are in TEX format).
  2331.  
  2332.  
  2333. In addition,  there is some hope that mh.5,  or a successor,  might be found in a
  2334.  
  2335. future 4.x Berkeley distribution.
  2336.  
  2337.  
  2338.  
  2339.                                                       30
  2340.   Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985             31
  2341.  
  2342.  
  2343.         Although MH is not "supported" per se, it does have a bug reporting address.
  2344.  
  2345. Normally, the address Bug-MH@UCI is used to report bugs and bug fixes.  There are
  2346.  
  2347. however, two discussion groups which concern themselves with MH:
  2348.  
  2349.  
  2350.            1.  MH-Users@UCI
  2351.  
  2352.                A discussion group for the MH user community at large.  Appropriate
  2353.  
  2354.                topics include:  questions about how to use MH, tips on MH usage, and
  2355.  
  2356.                exchange of MH shell scripts.  All requests to be added to or deleted
  2357.  
  2358.                from this list, along with problems, questions and suggestions, should
  2359.  
  2360.                be sent to MH-Users-Request@UCI.
  2361.  
  2362.  
  2363.            2.  MH-Workers@UCI
  2364.  
  2365.                A discussion group for MH maintainers and experts.  Appropriate topics
  2366.  
  2367.                include:  questions on how to configure MH, tips on MH configuration,
  2368.  
  2369.                exchange of MH bug reports (and fixes).  All requests to be added to or
  2370.  
  2371.                deleted from this list, along with problems, questions and suggestions,
  2372.  
  2373.                should be sent to MH-Workers-Request@UCI.
  2374.  
  2375.  
  2376. The ``UCI''      host is also known as ``ucivax''      , so a possible UUCP path might
  2377.  
  2378. be : : :!ucbvax!ucivax!bug-mh.
  2379.  
  2380.  
  2381.         Updates to MH are published on the MH-Workers list in the form of context
  2382.  
  2383. diffs, and the appropriate distribution images are updated as well.
  2384.  
  2385.  
  2386.  
  2387.  
  2388.                                                 Contents
  2389.  
  2390.  
  2391.  
  2392.                                                                                                          Page
  2393.  
  2394. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       1
  2395.  
  2396. The MH Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       2
  2397.  
  2398.         The MH Environs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       3
  2399.  
  2400.         An MH Transcript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       5
  2401.  
  2402. Some MH Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       5
  2403.  
  2404.         Message Sequences and Selection  . . . . . . . . . . . . . . . . . . . . . . .       5
  2405.  
  2406.         Draft Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       7
  2407.  
  2408.         BBoards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       8
  2409.  
  2410.         Bursting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      10
  2411.  
  2412.         Distributed Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      11
  2413.  
  2414. User Interface Issues in MH  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      12
  2415.  
  2416.         Creeping Featurism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      12
  2417.  
  2418.         Templates versus Switches. . . . . . . . . . . . . . . . . . . . . . . . . . . .      13
  2419.  
  2420.         Modularity versus Monolithicity . . . . . . . . . . . . . . . . . . . . . . . .      17
  2421.  
  2422. The MH Distribution  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      17
  2423.  
  2424.         Configurable MH  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      18
  2425.  
  2426.         Interface to the Message Transport System  . . . . . . . . . . . . . . . . .      20
  2427.  
  2428. Concluding Remarks  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      21
  2429.  
  2430.         TODO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      22
  2431.  
  2432. References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      24
  2433.  
  2434. Appendix A: MH Commands  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      26
  2435.  
  2436. Appendix B: Distribution Mechanics. . . . . . . . . . . . . . . . . . . . . . . . .      30
  2437.  
  2438.  
  2439.  
  2440. _____________________________________
  2441. This document (version #1.43) was TEXset April 12, 1990 with DISS.STY v103.
  2442.  
  2443.  
  2444.  
  2445.                                                        i
  2446.